🎖️GitЯра🎖️
.github/agents/speckit.plan.agent.md 228fa8a368d478a9a244da2eebaef812ae724df5 (228fa8a3) Text, 6.24 KB
---
description: Execute the implementation planning workflow using the plan template to generate design artifacts.
handoffs:
Tff7b72- label: Create Tasks
agent: speckit.tasks
prompt: Break the plan into tasks
send: true
Tff7b72- label: Create Checklist
agent: speckit.checklist
Tc9d1d9 prompt: Create a checklist for the following domain...
Tc9d1d9---
Tc9d1d9## User Input
Ta5d6ff```Ta5d6fftext
$ARGUMENTS
Ta5d6ff```
You **MUST** consider the user input before proceeding (if not empty).
Tc9d1d9## Pre-Execution Checks
**Check for extension hooks (before planning)**:
Tff7b72- Check if Ta5d6ff`.specify/extensions.yml` exists in the project root.
Tff7b72- If it exists, read it and look for entries under the Ta5d6ff`hooks.before_plan` key
Tff7b72- If the YAML cannot be parsed or is invalid, skip hook checking silently and continue normally
Tff7b72- Filter out hooks where Ta5d6ff`enabled` is explicitly Ta5d6ff`false`. Treat hooks without an Ta5d6ff`enabled` field as enabled by default.
Tff7b72- For each remaining hook, do **not** attempt to interpret or evaluate hook Ta5d6ff`condition` expressions:
Tff7b72- If the hook has no Ta5d6ff`condition` field, or it is null/empty, treat the hook as executable
Tff7b72- If the hook defines a non-empty Ta5d6ff`condition`, skip the hook and leave condition evaluation to the HookExecutor implementation
Tff7b72- For each executable hook, output the following based on its Ta5d6ff`optional` flag:
Tff7b72- **Optional hook** (Ta5d6ff`optional: true`):
Ta5d6ff ```
## Extension Hooks
**Optional Pre-Hook**: {extension}
Command: `/{command}`
Description: {description}
Prompt: {prompt}
To execute: `/{command}`
```
Tff7b72- **Mandatory hook** (Ta5d6ff`optional: false`):
Ta5d6ff ```
## Extension Hooks
**Automatic Pre-Hook**: {extension}
Executing: `/{command}`
EXECUTE_COMMAND: {command}
Wait for the result of the hook command before proceeding to the Outline.
```
Tff7b72- If no hooks are registered or Ta5d6ff`.specify/extensions.yml` does not exist, skip silently
Tc9d1d9## Outline
Tff7b721. **Setup**: Run Ta5d6ff`.specify/scripts/bash/setup-plan.sh --json` from repo root and parse JSON for FEATURE_SPEC, IMPL_PLAN, SPECS_DIR, BRANCH. For single quotes in args like "I'm Groot", use escape syntax: e.g 'I'\''m Groot' (or double-quote if possible: "I'm Groot").
Tff7b722. **Load context**: Read FEATURE_SPEC and Ta5d6ff`.specify/memory/constitution.md`. Load IMPL_PLAN template (already copied).
Tff7b723. **Execute plan workflow**: Follow the structure in IMPL_PLAN template to:
Tff7b72- Fill Technical Context (mark unknowns as "NEEDS CLARIFICATION")
Tff7b72- Fill Constitution Check section from constitution
Tff7b72- Evaluate gates (ERROR if violations unjustified)
Tff7b72- Phase 0: Generate research.md (resolve all NEEDS CLARIFICATION)
Tff7b72- Phase 1: Generate data-model.md, contracts/, quickstart.md
Tff7b72- Phase 1: Update agent context by running the agent script
Tff7b72- Re-evaluate Constitution Check post-design
Tff7b724. **Stop and report**: Command ends after Phase 2 planning. Report branch, IMPL_PLAN path, and generated artifacts.
Tff7b725. **Check for extension hooks**: After reporting, check if Ta5d6ff`.specify/extensions.yml` exists in the project root.
Tff7b72- If it exists, read it and look for entries under the Ta5d6ff`hooks.after_plan` key
Tff7b72- If the YAML cannot be parsed or is invalid, skip hook checking silently and continue normally
Tff7b72- Filter out hooks where Ta5d6ff`enabled` is explicitly Ta5d6ff`false`. Treat hooks without an Ta5d6ff`enabled` field as enabled by default.
Tff7b72- For each remaining hook, do **not** attempt to interpret or evaluate hook Ta5d6ff`condition` expressions:
Tff7b72- If the hook has no Ta5d6ff`condition` field, or it is null/empty, treat the hook as executable
Tff7b72- If the hook defines a non-empty Ta5d6ff`condition`, skip the hook and leave condition evaluation to the HookExecutor implementation
Tff7b72- For each executable hook, output the following based on its Ta5d6ff`optional` flag:
Tff7b72- **Optional hook** (Ta5d6ff`optional: true`):
Ta5d6ff ```
## Extension Hooks
**Optional Hook**: {extension}
Command: `/{command}`
Description: {description}
Prompt: {prompt}
To execute: `/{command}`
```
Tff7b72- **Mandatory hook** (Ta5d6ff`optional: false`):
Ta5d6ff ```
## Extension Hooks
**Automatic Hook**: {extension}
Executing: `/{command}`
EXECUTE_COMMAND: {command}
```
Tff7b72- If no hooks are registered or Ta5d6ff`.specify/extensions.yml` does not exist, skip silently
Tc9d1d9## Phases
Tc9d1d9### Phase 0: Outline & Research
Tff7b721. **Extract unknowns from Technical Context** above:
Tff7b72- For each NEEDS CLARIFICATION → research task
Tff7b72- For each dependency → best practices task
Tff7b72- For each integration → patterns task
Tff7b722. **Generate and dispatch research agents**:
Ta5d6ff ```Ta5d6fftext
For each unknown in Technical Context:
Task: "Research {unknown} for {feature context}"
For each technology choice:
Task: "Find best practices for {tech} in {domain}"
Ta5d6ff ```
Tff7b723. **Consolidate findings** in Ta5d6ff`research.md` using format:
Tff7b72- Decision: [what was chosen]
Tff7b72- Rationale: [why chosen]
Tff7b72- Alternatives considered: [what else evaluated]
**Output**: research.md with all NEEDS CLARIFICATION resolved
Tc9d1d9### Phase 1: Design & Contracts
**Prerequisites:** Ta5d6ff`research.md` complete
Tff7b721. **Extract entities from feature spec** → Ta5d6ff`data-model.md`:
Tff7b72- Entity name, fields, relationships
Tff7b72- Validation rules from requirements
Tff7b72- State transitions if applicable
Tff7b722. **Define interface contracts** (if project has external interfaces) → Ta5d6ff`/contracts/`:
Tff7b72- Identify what interfaces the project exposes to users or other systems
Tff7b72- Document the contract format appropriate for the project type
Tff7b72- Examples: public APIs for libraries, command schemas for CLI tools, endpoints for web services, grammars for parsers, UI contracts for applications
Tff7b72- Skip if project is purely internal (build scripts, one-off tools, etc.)
Tff7b723. **Agent context update**:
Tff7b72- Update the plan reference between the Ta5d6ff`<!-- SPECKIT START -->` and Ta5d6ff`<!-- SPECKIT END -->` markers in Ta5d6ff`.github/copilot-instructions.md` to point to the plan file created in step 1 (the IMPL_PLAN path)
**Output**: data-model.md, /contracts/*, quickstart.md, updated agent context file
Tc9d1d9## Key rules
Tff7b72- Use absolute paths for filesystem operations; use project-relative paths for references in documentation and agent context files
Tff7b72- ERROR on gate failures or unresolved clarifications
Served by rngit 1.5.2 - Generated in 0.11s